<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // let a = 1
        // let b = 2
        // 数组的解构赋值
        let arr = [1,2]
        let [a,b,c] = arr // 声明了3个变量a,b,c，这三个变量的值会自动从数组arr中从左往右进行一一赋值
        console.log(a,b,c); // 1 2 undefined
        // 变量c，相当于声明了变量没有赋值因此值为undefined

        // 对象的解构赋值
        let obj = {
            msg: "hello vue",
            name: "小v"
        }
        let { name, msg, age } = obj // 声明了3个变量，然后会在obj对象中找和变量名一样的属性名，然后把这个属性的值赋值变量
        console.log(msg, name, age); // hello vue 小v undefined

        // 扩展运算符 ...
        let obj2 = {
            name: "小明",
            age: 12
        }
        let obj3 = {
            gender: "男"
        }
        // 需求：将obj2的所有属性合并到obj3对象中
        obj3 = {
            gender: "男",
            ...obj2     // 直接把obj2对象的大括号去掉，提取里面的所有属性赋值给obj3对象
        }
        console.log(40, obj3);
        
        let arr1 = [1,2,3]
        let arr2 = [4,5,6]
        // 需求：合并arr1和arr2数组
        let newArr = [...arr1, ...arr2]
        // console.log(newArr);

        /**
         * reduce方法：
         * 作用：可以累积数组中的值，并返回该值
         * 语法：arr.reduce(funciton(total, item, index ,arr){},total的初始值)
         *  arr: 我们要累加的数组
         * reduce参数说明
         *  第一个参数: 是一个函数
         *  第二个参数：是函数中第一个参数的初始值
         * 回调函数中参数说明：
         *  total: 累积结果
         *  item： arr数组中的的元素
         *  index: arr数组中元素对应的下标值
         *  arr: 数组本身
         * **/  
        let arr5 = [1,2,3,4,5]
        // 需求：求arr5数组中元素的和
        function sum(arr){
            let result = 0;
            arr.forEach(item => {
                result+=item
            });
            return result
        }
        console.log("forEach方法计算结果：",sum(arr5));

        console.log(arr5);

        function sumReduce(arr){
            return arr.reduce((total, item)=>{
                console.log("total: ",total, "item: ",item);
                return total+=item
            }, 0)
        }
        console.log("reduce方法计算结果：", sumReduce(arr5));


    </script>
</body>
</html>